Flash memory is a non-volatile computer memory that can be electrically erased and reprogrammed. It is a specific type of EEPROM (Electrically Erasable Programmable Read-Only Memory) that is erased and programmed in large blocks. It derives its name from the early days when the entire chip had to be erased at once, a “flash erase.” Due to its low cost compared to both other forms of EEPROMs or battery-powered random access memory (RAM), flash memory has become a dominant technology when non-volatile, solid state storage is need.
Originally, the main application of flash memory was to store firmware for a computer or electronic device. The non-volatility makes it suitable for storing critical software, including boot code, and the reprogrammability gives it the flexibility to accept firmware changes. Many devices with general purpose processors, including computer motherboards, use flash memory as their boot ROM.
In addition to non-volatility, flash memory has faster access time and provides better shock resistance than standard disk media, such as a hard drive. The capacity of large flash memory now rivals some disk media, such as compact discs (CD) and digital video disks (DVD). Flash media has become a popular method of storing various types of media, such as digital photographs, music and video.
To obtain the increased capacity in flash memory while maintaining a low cost, multi-level cell flash memory has been used. FIG. 1 illustrates a typical flash memory cell. This is often called a floating gate transistor, because it resembles a metal-oxide-semiconductor (MOS) field effect transistor (FET). Like a MOSFET, the floating gate transistor comprises drain 104 and source 106 fabricated onto substrate 102. On the substrate is formed an insulator 120, which is often an oxide. Conductive gate 108 is also fabricated on the insulator 120. Unlike a MOSFET, the floating gate transistor further comprises floating gate 110, located between gate 108 and substrate 102. In a floating gate transistor, gate 108 is referred to as the control gate to distinguish it from the floating gate.
In a MOSFET (ignoring floating gate 110 of FIG. 1), when a voltage is applied to gate 108 relative to substrate 102, channel 112 is formed allowing current to flow between source 106 and drain 104. When a MOSFET operates in enhancement mode such as this, current does not immediately flow because sufficient charge needs to build up in channel 112 to overcome the natural charge imposed by the doping of substrate 102. The voltage required to bring sufficient charge to channel 112 is known as the threshold voltage. In a floating gate transistor, floating gate 110 has a charge, which, depending on its polarity either enhances or screens the effect of the charge on control gate 108, altering the threshold voltage needed at control gate 108. Because floating gate 110 is encased in an insulator, charge on floating gate 110 is trapped and does not change. In practice, the charge on floating gate 110 can remain trapped for years, and a non-volatile memory is thus formed.
There are two popular configuration of flash cells, NOR flash and NAND flash. They are so named because the way the floating gate transistors are connected together resembles a NOR or NAND gate, respectively. Under normal conditions the charge on floating gate 110 does not change. However, as in the case of NOR flash, electrons can be injected onto floating gate using hot electron injection and removed through quantum tunneling. In the case of NAND flash, electrons can be tunneled through the insulator onto the floating gate using tunneling injection and removed through tunneling release.
By measuring the threshold voltage, the information stored in a flash memory cell can be read. In the simplest case, binary data is stored in a memory cell. As shown in FIG. 2A, when flash is erased (i.e., charge is removed from the floating gate) the threshold voltage is the natural threshold voltage of the MOSFET, so the threshold voltage is approximately voltage 202 and the cell is in the “1” state. To program a “0”, charge is imparted to the floating gate to drive the threshold voltage up to voltage 204. To read the value of the floating gate cell, the threshold voltage of the cell is compared to cutoff voltage 206. If the threshold voltage is greater than cutoff voltage 206, then a “0” is read from the flash memory cell. If the threshold voltage is less than the cutoff voltage 206, a “1” is read from the flash memory cell.
To increase capacity, modern flash employs multi-level cells (MLCs). A single-level cell (SLC), as described in FIG. 1, stores one bit corresponding to two states. MLC use four or more states to store two or more bits of information per cell. For example in FIG. 2B, in the erased state the flash memory cell the floating gate has no charge and the threshold voltage is voltage 212, so the flash memory cell has a natural state of “11”. To program a “10”, sufficient charge is imparted to the floating gate to drive the threshold voltage down up to voltage 214. To program a “01”, even more charge is imparted to the floating gate to drive the threshold voltage up to voltage 216. To program a “00”, even more charge is imparted to the floating gate to drive the threshold voltage up to voltage 218. To read the various values, the threshold voltage is compared to cutoff voltages 222, 224, and 226.
FIG. 2C shows threshold voltages used in 3-bit per cell (3BPC) flash memory cell. The erased stated of the 3BPC cell is “111” with a threshold voltage equal to voltage 232. To program “110”, “101”, “100”, “011”, “010”, “001” and “000”, sufficient charge is imparted onto the floating gate to drive up the threshold voltage to voltages 234, 236, 238, 240, 242, 244, and 246, respectively. To read the value of the 3BPC cells, the threshold voltage is compared to cutoff voltages 252, 254, 256, 258, 260, 262 and 264. Beyond 3BPC cells, recent innovations have made 4-bit per cell (4BPC) flash memory cells feasible.
MLCs offer higher capacity in the same number of cells, thus reducing the cost for the amount of storage. The reliability, however, is often lower because the adjacent voltage levels used to represent different voltage levels are closer together, so charge leaking to or from a control gate can result in an unwanted transition in the logical state of the cell. For media applications a small amount of error is generally acceptable and may even be unperceivable by the end user. For example, an incorrect bit or bits in a movie could result in a block being distorted or in a song could result in an inaudible pop. However, for firmware applications and especially boot ROM applications, a bit error would mean an incorrect instruction would be read from flash causing the firmware to malfunction.
Due to the dual requirements of flash memory, many devices use both SLC flash and MLC flash. SLC is used for the high reliability lower capacity storage such as boot ROM and MLC is used for the high capacity, lower reliability storage. FIG. 3 shows a typical electronic device, it comprises processing unit 302, which can be a processor, application specific integrated circuit (ASIC) or other circuit which is used to control the electronic device, volatile memory 306, which can be random access memory (RAM) including dynamic random access memory (DRAM) and/or static random access memory (SRAM) and/or other forms of volatile memory, and other circuitry 304, which is device specific circuitry that performs the functions of the particular device. For example, other circuitry 304 in a digital camera can include charge-coupled devices (CCD), image processing circuitry, display circuitry and drivers; other circuitry in an MP3 player could include an audio driver; other circuitry in a multi-function peripheral could include printer, scanner and fax circuitry. Additionally, the electronic device comprises memory controller 312 coupled to firmware flash 314 and memory controller 316 coupled to media flash 318. The memory controllers, processing unit 302, device specific circuitry 304 and volatile memory 306 are communicatively coupled often through the use of a data bus such as data bus 310. Memory controller 312 and memory controller 316 can also directly communicate with other circuits through direct memory access (DMA). Due to the reliability and capacity requirements, firmware flash 314 is often SLC flash and media flash 318 is often MLC flash. The use of two different types of flash, each likely requiring its own memory controller, increases the cost, size and complexity of the electronic device.